﻿using System;
using System.Web;
using System.Web.Security;
using System.Web.Services;
using App_Code.Clases;
using App_Code.Utilidades;
using SubSonic.Repository;

public partial class Login : System.Web.UI.Page
{
    static SimpleRepository repository = new SimpleRepository("Electro",SimpleRepositoryOptions.None);
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Autorizar(object sender, EventArgs e)
    {
        try
        {
            var passwordS = password.Value;
            var passEncriptado = FormsAuthentication.HashPasswordForStoringInConfigFile(passwordS, "MD5");
            var usuario =
                repository.Single<Usuario>(x => x.Password == passEncriptado && x.NombreUsuario == nombreUsuario.Value);

            if(usuario!=null)
            {
                var rol = repository.Single<Rol>(usuario.IdRol);
                var perfil = repository.Single<Perfil>(x => x.IdUsuario == usuario.Id);
                var usuarioSesion = new UsuarioSesion();

                usuarioSesion.IdUsuario = usuario.Id;
                usuarioSesion.NombreRol = rol.Nombre;
                usuarioSesion.NombreUsuario = usuario.NombreUsuario;
                usuarioSesion.TipoRol = rol.TipoUsuario;
                usuarioSesion.IdPerfil = (perfil == null) ? 0 : perfil.Id;

                SesionUsuario.UsuarioSesion = usuarioSesion;
                if(rol.TipoUsuario==0||rol.TipoUsuario==1)
                {
                    Response.Redirect("/e-lectrodomesticos/Mantenimiento/Mantenimientos.aspx");
                }
                else
                {
                    
                    
                    Response.Redirect("/e-lectrodomesticos/Productos/VerProductos.aspx");
                }
            }
        }
        catch(Exception)
        {
            
        }
    }


    [WebMethod]
    public static object LoginAjax(string clave,string nUsuario)
    {
        try
        {
            var passwordS = clave;
            var passEncriptado = FormsAuthentication.HashPasswordForStoringInConfigFile(passwordS, "MD5");
            var usuario =
                repository.Single<Usuario>(x => x.Password == passEncriptado && x.NombreUsuario == nUsuario);

            if (usuario != null)
            {
                var rol = repository.Single<Rol>(usuario.IdRol);
                var perfil = repository.Single<Perfil>(x => x.IdUsuario == usuario.Id);
                var usuarioSesion = new UsuarioSesion();

                usuarioSesion.IdUsuario = usuario.Id;
                usuarioSesion.NombreRol = rol.Nombre;
                usuarioSesion.NombreUsuario = usuario.NombreUsuario;
                usuarioSesion.TipoRol = rol.TipoUsuario;
                usuarioSesion.IdPerfil = (perfil == null) ? 0 : perfil.Id;

                SesionUsuario.UsuarioSesion = usuarioSesion;
                return new { Correcto = true, EsAdministrador = (rol.TipoUsuario == 0) };
            }
            return new { Correcto = false,Mensaje="El nombre de usuario o contraseña no son correctos." };
        }
        catch (Exception ex)
        {
            return new { Correcto = false, Mensaje = "Ha ocurrido un error:\n"+ex.Message };
        }
    }
}
